package cn.lzm.registry;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @author lzm
 * @Date 2024/7/16
 * @description 本地服务注册中心，主要是为了根据请求的接口找到对应的实现类
 */
public class LocalRegistry {

    // 用来存放服务名和具体的服务的class文件，方便反射调用, 使用static实现单例模式
    private static final Map<String, Class<?>> SERVICES = new ConcurrentHashMap<>();

    /**
     * 注册服务
     *
     * @param serviceName 类名
     * @param implClass 实现类
     */
    public static void register(String serviceName, Class<?> implClass) {
        SERVICES.put(serviceName, implClass);
    }

    /**
     * 获取服务
     *
     * @param serviceName 类名
     * @return 服务实现类
     */
    public static Class<?> get(String serviceName) {
        return SERVICES.get(serviceName);
    }

    /**
     * 删除服务
     *
     * @param serviceName 服务名
     */
    public static void remove(String serviceName) {
        SERVICES.remove(serviceName);
    }

}
